# -*- coding: utf-8 -*-
from django.db import models
from djtools.dbfields import BrEstadoBrasileiroField, BrTelefoneField

class Pessoa(models.Model):
    nome = models.CharField(u'Nome', max_length=200)
    sexo = models.CharField(u'Sexo', max_length=2, null=True, blank=True)
    nome_mae = models.CharField(u'Nome da mãe', max_length=100, null=True, blank=True)
    nome_pai = models.CharField(u'Nome do pai', max_length=100, null=True, blank=True)
    data_nascimento = models.DateField(u'Data nascimento')
    nacionalidade = models.CharField(u'Nacionalidade', max_length=40, null=True, blank=True)
    naturalidade = models.CharField(u'Naturalidade', max_length=50,null=True,  blank=True)
    estado_civil = models.CharField(u'Estado Civil', max_length=20, null=True, blank=True)
    cpf = models.CharField(u'CPF', max_length=20, null=True, blank=True)
    rg = models.CharField(u'Identidade', max_length=20, null=True, blank=True)
    uf = BrEstadoBrasileiroField(u'UF', max_length=2, null=True, blank=True)
    via_documento = models.CharField(u'Via Documento', max_length=2, null=True, blank=True)
    excluido = models.BooleanField(u'Excluído', default=False)
    
    class Meta:
        db_table = 'pessoa'
        verbose_name = u'Pessoa'
        verbose_name_plural = u'Pessoas'
        
    def __unicode__(self):
        return self.nome
    
    def _endereco_lograd_num(self):
        if self.endereco_set.all()[0].numero or self.endereco_set.all()[0].complemento:
            if self.endereco_set.all()[0].numero and self.endereco_set.all()[0].complemento:
                return "%s, %s %s" %(self.endereco_set.all()[0].logradouro, self.endereco_set.all()[0].numero, self.endereco_set.all()[0].complemento) 
            elif self.endereco_set.all()[0].numero:
                return "%s, %s" %(self.endereco_set.all()[0].logradouro, self.endereco_set.all()[0].numero)
            elif self.endereco_set.all()[0].complemento:
                return "%s, %s" %(self.endereco_set.all()[0].logradouro, self.endereco_set.all()[0].complemento)
        else:
            return "%s" %(self.endereco_set.all()[0].logradouro)
    
    def _endereco_bairro(self):
        if self.endereco_set.all()[0].bairro is None:
            return ""
        else:
            return self.endereco_set.all()[0].bairro
    
    def _endereco_municipio_estado(self):
        if self.endereco_set.all()[0].municipio or self.endereco_set.all()[0].estado:
            if self.endereco_set.all()[0].municipio and self.endereco_set.all()[0].estado:
                return ", %s/%s" %(self.endereco_set.all()[0].municipio, self.endereco_set.all()[0].estado)
            elif self.endereco_set.all()[0].municipio:
                return ", %s" %(self.endereco_set.all()[0].municipio)
            elif self.endereco_set.all()[0].estado:
                return ", %s" %(self.endereco_set.all()[0].estado)
        else:
            return ""
    
    def _endereco_cep_municipio(self):
        return "%s %s" %(self.endereco_set.all()[0].cep, self._endereco_municipio_estado())

#    def _endereco_geral(self):
#        out = ['<ol>']
#        out.append('<li>%s</li>' % self.nome)
#        out.append('<li>%s</li>' % self.endereco._)
#        out.append('<li>%s</li>' % self.nome)
#        out.append('<li>%s</li>' % self.nome)
#        out.append('</ol>')
#        return ''.join(out)

class Email(models.Model):
    email = models.CharField(u'E-Mail', max_length=100, null=True, blank=True)
    pessoa = models.ForeignKey(Pessoa, verbose_name=u'Pessoa')
    
    class Meta:
        db_table = 'email'
        verbose_name = u'Email'
        verbose_name_plural = u'Emails'
    
    def __unicode__(self):
        return '%s' % self.email

class Telefone(models.Model):
    telefone = BrTelefoneField(u'Telefone', null=True, blank=True)
    tipo = models.CharField(u'Tipo', max_length=3, null=True, blank=True)
    pessoa = models.ForeignKey(Pessoa, verbose_name=u'Pessoa')
    
    class Meta:
        db_table = 'telefone'
        verbose_name = u'Telefone'
        verbose_name_plural = u'Telefones'
    
    def __unicode__(self):
        return '%s' % self.telefone

class Endereco(models.Model):
    logradouro = models.CharField(u'Logradouro', max_length=50)
    numero = models.CharField(u'Número', max_length=10, null=True, blank=True)
    complemento = models.CharField(u'Complemento', max_length=50, null=True, blank=True)
    bairro = models.CharField(u'Bairro', max_length=30, null=True, blank=True)
    municipio = models.CharField(u'Município', max_length=30, null=True, blank=True)
    cep = models.CharField(u'CEP', max_length=9, null=True, blank=True)
    estado = BrEstadoBrasileiroField(u'Estado', max_length=2, null=True, blank=True)
    pessoa = models.ForeignKey(Pessoa, verbose_name=u'Pessoa')
    
    class Meta:
        db_table = 'endereco'
        verbose_name = u'Endereço'
        verbose_name_plural = u'Endereços'
    
    def __unicode__(self):
        return '%s, %s' % (self.logradouro.upper(), self.numero)
#        
#    def endereco_rua(self):
#        return '%s, %s' % (self.logradouro.upper(), self.numero)
#    
#    def endereco_cep(self):
#        return '%s, %s/%s' % (self.cep, self.municipio.upper(), self.uf.upper())
    
class Setor(models.Model):
    nome = models.CharField(u'Nome', max_length=50, unique=True)
    sigla = models.CharField(u'Sigla', max_length=15, unique=True)
    ramal = models.SmallIntegerField(u'Ramal', null=True, blank=True)
    
    class Meta:
        db_table = 'setor'
        verbose_name = u'Setor'
        verbose_name_plural = u'Setores'
    
    def __unicode__(self):
        return '%s' % self.sigla
    
class Orgao(models.Model):
    codigo = models.SmallIntegerField(u'Código', unique=True)
    nome = models.CharField(u'Nome', max_length=50, unique=True)
    sigla = models.CharField(u'Sigla', max_length=15, unique=True)
    
    class Meta:
        db_table = 'orgao'
        verbose_name = u'Órgão'
        verbose_name_plural = u'Orgãos'
    
    def __unicode__(self):
        return '%s' % (self.sigla)
    
class Estacao(models.Model):
    nome = models.CharField(u'Nome', max_length=150, unique=True)
    
    class Meta:
        db_table = 'estacao'
        verbose_name = u'Estação'
        verbose_name_plural = u'Estações'
    
    def __unicode__(self):
        return '%s' % self.nome